package homework.work3;


/*
某电商系统后台，前端程序员需要后端程序员，提供接口来完成商品的管理，展示页面。
假如前后端商量好，要求能实现CRUD操作, 采用MVC分层思想, 业务逻辑如下:

- 展示全部商品（Products）页面时，将仅装有商品对象的数组返回，前端不提供任何数据。
- 新增商品时，前端提供商品各种参数，后端需要校验ID唯一性，然后将对象插入数组，
    返回插入结果(true/false)。
- 查询商品, 前端提供商品ID或者商品名称(可根据ID查询或者根据商品名称查询),
    后端根据信息查询商品详情, 并返回结果(商品对象)
- 更新商品(每次更新商品中的一个信息即可), 前端提供要被更新的商品ID,
    以及新的产品信息(可以用数组的形式存储新的产品信息), 后端根据商品ID找到该商品, 并将新的信息替换, 返回该商品对象.
- 删除商品时，前端提供商品ID，后端将该商品删除后，返回删除结果。
    （成功返回true，根据ID找不到该商品即删除失败返回false）
 */

import homework.work3.controller.ProductController;
import homework.work3.model.Product;
import homework.work3.service.ProductServiceImpl;


public class Main {
    static ProductController controller=new ProductController();
    public static void main(String[] args) {
        System.out.println("---获取所有商品数据---");
        findAllProducts();

        System.out.println("---增加商品数据---");
        addProducts();

        System.out.println("---删除商品---");
        deletProducts();

        System.out.println("---按照id进行查找---");
        findProductsByID();

        System.out.println("---按照名称进行查找---");
        findProductsByName();

        System.out.println("---更新商品（按id查找）---");
        updateProductsByID();

    }

    private static void updateProductsByID() {
        //模拟客户端
        int id=1;
        String name="lisi";
        Product p=new Product();
        p.setId(id);
        p.setName(name);

        Product product=controller.updateProductID(p);
        if(product!=null){
            product.printProductInfo();
        }
    }

    private static void findProductsByName() {
        String name="手机";
        Product product=controller.getProductsName(name);
        if(product!=null){
            System.out.println("按照名称进行查找成功");
            product.printProductInfo();
        }else{
            System.out.println("按照名称进行查找失败");
        }
    }


    //按照id进行查找
    private static void findProductsByID() {
        Product product= controller.getProductsID(1);
        if(product!=null){
            product.printProductInfo();
        }
    }

    //删除商品
    private static boolean deletProducts() {
        //模拟前端传来得数据
        int id=4;
        Product[] product=controller.getAllProducts();
        for (Product product1 : product) {
            if(product1.getId()==id){
                product1.setFlog(1);
                System.out.println("delet Product success");
                findAllProducts();
                return true;
            }
        }
        return false;
    }

    //添加商品
    private static void addProducts() {
        //新增一个商品  模拟前端传来得数据
        int id=5;
        String name="笔记本电脑";
        double price=4999;
        String brand="联想";

        //将数据封装成对象
        Product product = new Product(id, name, price, brand);
        boolean result=controller.addProduct(product);
        if(result){
            System.out.println("add success");
            findAllProducts();
        }else{
            System.out.println("add false");
        }
    }

    //显示所有商品
    private static void findAllProducts() {
        Product[] products=controller.getAllProducts();
        for (Product product : products) {
            if(product!=null&&product.getFlog()==0){
                product.printProductInfo();
            }
        }
    }

}
